Die Anweisung GROUP BY gruppiert Zeilen mit denselben Werten in Zusammenfassungszeilen, z. B. „Ermitteln Sie die Anzahl der Kunden in jedem Land“.
Die Anweisung GROUP BY wird häufig mit Aggregatfunktionen (COUNT(), MAX(), MIN(), SUM(), AVG()) verwendet, um eine Ergebnismenge nach einer oder mehreren Spalten zu gruppieren.
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s)
Das Folgende ist ein Beispiel aus der Tabelle „Customers“ („Kunden“) der Datenbank „Northwind“:
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 5021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 5023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
Die folgende SQL-Anweisung listet die Anzahl der Kunden in jedem Land auf:
Run SQLSELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
Die folgende SQL-Anweisung listet die Kunden in jedem Land auf, sortiert vom höchsten zum niedrigsten Wert:
Run SQLSELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
ORDER BY COUNT(CustomerID) DESC
Das Folgende ist ein Beispiel aus der Tabelle „Orders“ („Orders“) der Datenbank „Northwind“:
ProductID | OrderID | CustomerID | EmployeeID | OrderDate | ShipperID |
---|---|---|---|---|---|
1 | 10248 | 90 | 5 | 1996-07-04 | 3 |
2 | 10249 | 81 | 6 | 1996-07-05 | 1 |
3 | 10250 | 34 | 4 | 1996-07-08 | 2 |
4 | 10251 | 84 | 3 | 1996-07-08 | 1 |
5 | 10252 | 76 | 4 | 1996-07-09 | 2 |
Und das Beispiel aus der Tabelle „Shippers“ („Senders“):
ShipperID | ShipperName | Phone |
---|---|---|
1 | Speedy Express | (503) 555-9831 |
2 | United Package | (503) 555-3199 |
3 | Federal Shipping | (503) 555-9931 |
Die folgende SQL-Anweisung listet die Anzahl der von jedem Absender gesendeten Bestellungen auf:
Run SQLSELECT Shippers.ShipperName, COUNT(Orders.OrderID) AS NumberOfOrders
FROM Orders
LEFT JOIN Shippers
ON Orders.ShipperID = Shippers.ShipperID
GROUP BY ShipperName